/**
 * @file basic_defs.h
 *
 * Library-wide basic definitions
 *
 * @author dhlin
 */

#ifdef _MSC_VER
#pragma once
#endif

#ifndef SLIPP_BASIC_DEFS_H
#define SLIPP_BASIC_DEFS_H

#include <slipp/base/config.h>

#include <cstddef>
#include <cstdint>
#include <utility>


#if ( (BCSLIB_COMPILER == BCSLIB_MSVC) || (BCSLIB_COMPILER == BCSLIB_GCC && __GNUC_MINOR__ >= 6) )
#define SLI_NULL nullptr
#else
#define SLI_NULL 0L
#endif


#ifdef SLIPP_ENABLE_SSE2
#include <xmmintrin.h>
#include <emmintrin.h>
#endif


namespace sli
{
	using std::int8_t;
	using std::int16_t;
	using std::int32_t;
	using std::int64_t;

	using std::uint8_t;
	using std::uint16_t;
	using std::uint32_t;
	using std::uint64_t;

	using std::ptrdiff_t;
	using std::size_t;

	using std::intptr_t;
	using std::uintptr_t;

	typedef long index_t;

	using std::pair;
	using std::make_pair;

	template<typename T1, typename T2>
	inline pair<T1&, T2&> tie_pair(T1& t1, T2& t2)
	{
		return pair<T1&, T2&>(t1, t2);
	}

}




#endif



